package com.passion.solr.enums;

import com.passion.solr.entity.DemoSolrDocument;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 类描述：与solr有关的枚举统一管理
 *
 * @author ZhuYin
 * @since 2024年09月23日
 */
public class SolrEnums {

    /**
     * 类描述：维护solr中的core与数据库表和类之间的对应关系
     *
     * @author ZhuYin
     * @since 2025年01月02日
     */
    @Getter
    @AllArgsConstructor
    public enum SolrCore {
        /** solr的core与数据库表与实体类对应关系 */
        DEMO_CORE("t_demo_solr", "t_demo_solr", DemoSolrDocument.class),


        ARCHIVES_CORE("archives", "archives", DemoSolrDocument.class),

        ;

        /**
         * solr上的core的名称
         */
        private final String coreName;
        /**
         * solr上的core对应的表的名称
         */
        private final String tableName;
        /**
         * solr上的core对应的实体类
         */
        private final Class<?> clazz;

        public static Class<?> getClassByCoreName(String coreName) {
            for (SolrCore solrCore : SolrCore.values()) {
                if (solrCore.getCoreName().equals(coreName)) {
                    return solrCore.getClazz();
                }
            }
            return null;
        }

    }

    /**
     * 类描述：solr的schema字段操作类型枚举
     *
     * @author ZhuYin
     * @since 2024年09月23日
     */
    @Getter
    @AllArgsConstructor
    public enum SchemaFieldOperateType {
        /** 新增字段 */
        addField("add-field", "新增字段"),
        /** 删除字段 */
        deleteField("delete-field", "删除字段"),


        ;

        private final String code;
        private final String desc;
    }



}
